package kalambury.client;

import javax.swing.*;

/**
 * Created with IntelliJ IDEA.
 * User: damienix
 * Date: 03.11.12
 * Time: 18:40
 * To change this template use File | Settings | File Templates.
 */

/**
 * klasa implementuj�ca startow� cze�� appletu gry
 */
public class ClientApplet extends JApplet implements ClientApplication {

    /**
     * wrapper umo�liwiaj�cy uruchomienie appletu jako normalnej aplikacji
     * @param args parametry
     */
    public static void main(String[] args) {
        ClientApplet applet = new ClientApplet();
        applet.frame = new JFrame();
        applet.frame.setSize(700, 500);
        applet.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        applet.isApplet = false;

        ClientForm cf = new ClientForm(applet);
        if (args.length > 0) {
            for (String p : args) {
                String s;
                if (p.startsWith("-ip")) {
                    s = p.substring(3);
                    System.out.println("setting server address: " + s);
                    ClientForm.setServerAddress(s);
                }
            }
        }
        applet.setActivePanel(cf);
        applet.frame.setVisible(true);
    }

    /**
     * czy jest applet
     */
    private boolean isApplet = true;
    /**
     * aktualnie pokazany frame
     */
    private JFrame frame = null;

    /**
     * inicjalizacja appletu
     */
    @Override
    public void init() {
        System.out.println("init");
        try {

        } catch (Exception e) {
            e.printStackTrace();
        }
        initGui();
    }

    /**
     * pokazuje wybrany panel w oknie lub applecie
     * @param p panel do pokazania
     */
    public void setActivePanel(JPanel p) {
        if (isApplet) {
            getContentPane().removeAll();
            getContentPane().add(p);
            getContentPane().revalidate();
            repaint();
        } else {
            frame.getContentPane().removeAll();
            frame.getContentPane().add(p);
            frame.pack();
            frame.getContentPane().revalidate();
            frame.repaint();
        }
    }

    /**
     * inicjalizuje GUI
     */
    private void initGui() {
        System.out.println("initgui");
        getContentPane().add(new ClientForm(this));
    }

}
